// 1. 先判断访问的接口，是否需要校验 （登录、注册不需要校验）
// 2. 需要校验，判断是否传递了token，
// 3. 没传就没权限访问，不再往下走
// 4. 传了，判断token是否一致
// 5. 一直的话就下一步，不一致就不再往下走
const whileList = ['/login','/registry']; //白名单
const jwt = require('jsonwebtoken');
module.exports = ()=>{
    return async (ctx,next)=>{
        console.log('中间件',ctx.path)
        if(whileList.includes(ctx.path)){ //在白名单里面
            console.log('包含')
            await next();
        } else {
            console.log('不包含');
            //获取token key:value  authorization:token
            let token = ctx.request.headers.authorization;
            if(!token){
                ctx.body = {
                    code:4,
                    mes:'没有权限'
                }
                return;
            }

            //校验token
            try{
                let info = jwt.verify(token,ctx.app.config.keys);
                await next();
            } catch(e){
                console.log(e,'*************')
                ctx.body = {
                    code:5,
                    mes:'校验失败'
                }
            }

        }
    }
}